#ifndef _SEM_HPP_
#define _SEM_HPP_

#include <iostream>
#include <semaphore.h>

class Sem
{
public:
    Sem(int value) // 传入的初始默认值
    {
        sem_init(&_sem, 0, value); // 0 -> 不需共享
    }
    void p() // P操作 -> 计数器减减 -> 申请信号量
    {
        sem_wait(&_sem);
    }
    void v() // V操作 -> 计数器加加 -> 发布信号量
    {
        sem_post(&_sem);
    }
    ~Sem() // 析构，直接销毁信号量
    {
        sem_destroy(&_sem); 
    }
protected:
    sem_t _sem; // 本质是计数器
};

#endif